home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 041-050 / amok42 / menu / menu.dok < prev    next >
Text File  |  1993-11-04  |  8KB  |  149 lines

  1. Dokumentation zu Menu V1.0
  2. ==========================
  3.  
  4. 1.Warum Menu ?
  5. --------------
  6.   Unter Intuition gibt es keine Möglichkeit, Menus mit Maus und Tastatur 
  7.   vernünftig zu bedienen. Dies ist mit Menu anders. Dabei wird ein Menu auf 
  8.   dem Bildschirm dargestellt, das sich mit der Maus und der Tastatur bedienen
  9.   läßt.
  10.   
  11. 2.Bedienung:
  12. ------------
  13.   Das Modul Menu stellt zwei verschiedene Arten von Menus zur Verfügung. Das
  14.   erste ist ein SelectMenu, bei dem aus einer Anzahl von Items eins ausgewählt 
  15.   werden kann. Das zweite ist ein CheckMenu, bei dem je nach Status des Items 
  16.   ein Check-Mark gesetzt wird oder entfernt wird. Mit dem letztem Item des Menus
  17.   wird das CheckMenu beendet.
  18.   
  19. 3.Das Beispielprogramm MenuDemo:
  20. --------------------------------
  21.   Es war schon immer so, ein Beispiel sagt mehr als tausend Worte, also sollte 
  22.   man sich MenuDemo ansehen. MenuDemo sucht mit der Funktion AvailFonts() nach 
  23.   Fonts und stellt die gefundenen in einen SelectMenu dar. Nun sollte man sich
  24.   einen Font aussuchen. Als nächstes wird ein CheckMenu dargestellt, mit dem die
  25.   DrawModes eingestellt werden können. Wird ein Item angeklickt, so wird da-
  26.   hinter ein Check-Mark gesetzt, bzw. gelöscht. Das letzte Item beendet die Aus-
  27.   wahl. Nun wird der gesammte Bildschirm mit dem ausgesuchten Font und den 
  28.   gewählten DrawModes beschrieben. Beendet wird das Programm mit der linken 
  29.   Maustaste.
  30.   Die Menus lassen sich, wie schon erwähnt, mit Maus und Tastatur steuern.
  31.   Bei der Steuerung mit der Maus, kann ein Item mit dem Mauszeiger aktiviert
  32.   werden, mit dem linken Mausknopf wird es dann angewählt.
  33.   Bei der Tastatursteuerung werden hauptsächlich die Cursortasten verwendet.
  34.   Bei CursorUp wird das nächst höhere Item aktiv, bei CursoDown das nächst 
  35.   niedrigere. Drückt man die Space Taste, so wird ebenfalls das nächst höhere
  36.   Item aktiviert. Ausgewählt wird ein Item mit allen übrigen Tasten.
  37.     
  38. 3.Programmierung:
  39. -----------------
  40.   Um ein Menu darstellen zu können, muß erstmal eine Struktur ausgefüllt werden,
  41.   die Menu-Struktur:
  42.  
  43.   Menu  = RECORD
  44.             leftEdge,topEdge : INTEGER; 
  45.             width,height     : INTEGER; 
  46.             type             : MenuType;            
  47.             flags            : MenuFlagSet;        
  48.             numItems         : CARDINAL;         
  49.             selectedItems    : LONGSET;     
  50.             checkMark        : ImagePtr;       
  51.             standWidth       : CARDINAL;      
  52.             hailText         : IntuiTextPtr;    
  53.             firstText        : IntuiTextPtr;   
  54.           END;
  55.               
  56.   leftEdge,topEdge : Koordinaten des linken oberen Punktes des Menus im Fenster.
  57.   width,height     : Höhe und Breite des Menus.
  58.                      Nur das Rechteck, das durch diese Koordinaten bestimmt ist,
  59.                      Wird am Ende wieder gelöscht !
  60.   type             : Zeigt an, um welche Menuart es sich handelt, entweder
  61.                      selectMenu oder checkMenu
  62.   flags            : Folgende MenuFlags sind zulässig:
  63.     
  64.     menuBorder       : Es wird ein Rahmen um das gesamte Menu gezogen
  65.     standardWidth    : Die Länge des Rahmens, bzw. des invertierten Bereichs ist 
  66.                        für alle Items gleich. Diese Länge muß in standWidth
  67.                        angegeben werden !
  68.     invertItems      : Das aktuelle Item wird invers dargestellt
  69.     boderItems       : Um das aktuelle Item wird ein Rahmen gezogen
  70.     cycleItems       : Die Farbe des aktuellen Items rotiert im VertB-Interrupt
  71.     changeColorItems : Das aktuelle Item wird in einer anderen Farbe dargestellt
  72.     customCheckMark  : Es wird ein eigenens Check-Mark verwendet,dessen ImagePtr 
  73.                        in checkMark eingetragen werden muß, natürlich nur bei 
  74.                        checkMenu sinnvoll !
  75.     clearFirst       : Der Bereich des Windows, in dem das Menu aufgebaut werden
  76.                        soll, wird vorher gelöscht
  77.     saveBack         : Der Bereich des Windows, in dem das Menu aufgebaut wird,
  78.                        wird gerettet und nach entfernen des Menus wieder dort
  79.                        eingesetzt
  80.                       
  81.   numItems         : Anzahl der Items, beim CheckMenu wird auch das letzte Item,
  82.                      das für die Beendigung des Menus dar ist, mitgezählt !                 
  83.   selectedItems    : Beim CheckMenu wird hier für jedes Item ein Flag gesetzt
  84.                      oder nicht, je nachdem ob ein Item abgehakt wurde oder 
  85.                      nicht. Hiermit lassen sich auch Voreinstellungen dem Menu
  86.                      übergeben. Übergibt man LONGSET{0,3,4} so sind die Items
  87.                      0,3,4 schon beim Darstellen des Menus aktiv.
  88.   hailText         : Zeiger auf einen IntuiText, der die Überschrift darstellt,
  89.                      dabei sind die Koordinaten des Textes relativ zu denen im 
  90.                      Menu.
  91.   firstText        : Zeiger auf das erste Item des Menus, das durch einen Intui-
  92.                      Text definiert ist, die einzelnene Items werden durch den 
  93.                      IntuiText.nextText Zeiger miteinander verkettet. Das letzte
  94.                      Item beim nextText muß ein NIL besitzen !
  95.                      Die Koordinaten des Menus sind wie schon beim hailText re-
  96.                      lativ zum Menu. Zu beachten ist noch, das bei der Akti-
  97.                      vierung eines Items, z.B. wenn es invertiert wird, 
  98.                      der Bereich des Textes Plus einen Rand auf allen Seiten von
  99.                      2 Pixeln mit invertiert wird. Damit am Ende das gesamte 
  100.                      Menu gelöscht wird, muß diese berücksichtigt werden! Ein
  101.                      Item sollte also bei einer leftEdge und topEdge von 
  102.                      mindestens 3 liegen.
  103.   
  104.   Diese Struktur wird nun folgender Procedure übergeben:
  105.   
  106.     PROCEDURE DrawMenu(WPtr:WindowPtr;MPtr:MenuPtr):CARDINAL
  107.     
  108.       WPtr:Zeiger auf das Window, in dem das Menu dargestellt werden soll.
  109.            Dabei ist noch zu beachten, das bei dem Window folgende IDCMPFlags
  110.            gesetzt sein müssen: mouseButtons,rawKey,mouseMove. Bei den Window-
  111.            Flags muß reportMouse gesetzt sein, damit DrawMenu korrekt funktio-
  112.            niert.
  113.       MPtr:Adresse der ausgefüllten Menu-Struktur
  114.       
  115.       DrawMenu gibt die Nummer des ausgewählten Items zurück, die natürlich nur
  116.       beim selectMenu sinnvoll ist, da sie beim CheckMenu immer die Nummer des 
  117.       letzen Items ist.
  118.       
  119.     Nach Beendigung hat man also folgende Ergebnisse:
  120.       Beim selectMenu wird die Nummer des angewählten Items zurückgegeben.
  121.       Beim checkMenu kann man an dem Menu-Eintrag selectedItems ablesen, welches
  122.       Item angewählt wurde, und welches nicht.
  123.       Beim select, wie beim checkMenu gilt, daß das erste Item die Nummer 0 be-
  124.       sitzt, das zweite die Nummer 1, und so weiter.
  125.                                                                 
  126. 4.Copyright:
  127. ------------
  128.   Es darf grundsätzlich nur das gesammte Paket weitergegeben werden, dazu ge-
  129.   höhren: Menu.def, Menu.mod, MenuDemo.mod, MenuDemo und Menu.dok. An diesen
  130.   Files dürfen keine Veränderungen vorgenommen werden!
  131.   Jeder darf das Modul Menu in seinen Programmen frei verwenden, es sei denn, es 
  132.   wird in irgendeiner Weise Geld damit verdient. In diesem Fall ist eine Ab-
  133.   sprache mit mir erforderlich.
  134.   Ich behalte mir rechtliche Maßnahmen gegen jeden vor, der gegen diese Bedin-
  135.   gungen verstößt !
  136.                    
  137. 5.Sonstiges:
  138. ------------
  139.   Wer irgendwelche Fragen,Vorschläge, Verbesserungen oder sonst irgend etwas auf
  140.   dem Herzen hat sollte sich an folgene Addresse wenden:
  141.  
  142.   Jan Behrens
  143.   Hauptstraße 13
  144.  
  145.   2211 Holstenniendorf                                                                                                                   
  146.  
  147.  
  148. viel Spaß mit den Menus !!!
  149.